﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using конфигуратор;

namespace Wpfконфигуратор
{
    public class R : DataTemplateSelector
    {

        public override DataTemplate SelectTemplate ( object item, DependencyObject container )
        {

            var element = container as FrameworkElement;

            if ( element != null && item != null )
            {
                Type тип;
                if ( item.GetType() == typeof( СвойствоОболочка ) )
                {
                    тип = (( СвойствоОболочка ) item).СвойствоИнфо.PropertyType;
                }
                else if ( item.GetType() == typeof( Поле ) )
                {
                    тип = (( Поле ) item).F.FieldType;
                }
                else
                {
                    return null;
                }

                if ( тип == typeof( bool ) )
                {
                    //var dt = new DataTemplate(typeof(bool));
                    //dt.DataType = typeof (bool);

                    var dtBool = element.FindResource( "DataTepmChecBoxПросмотр" ) as DataTemplate;
                    //var vt = dtBool.VisualTree;
                    return dtBool;
                }
                if ( тип.IsEnum )
                {
                    var atrib = тип.GetCustomAttributes( false ).ToList();
                    var flagAtt = atrib.Find( obj => obj.GetType() == typeof( FlagsAttribute ) );
                    if ( flagAtt != null )
                    {
                        return element.FindResource( "Флаг" ) as DataTemplate;
                    }
                    else
                    {
                        return element.FindResource( "Перечислитель" ) as DataTemplate;
                    }

                }



            }
            return element.FindResource( "TextBoxDefR" ) as DataTemplate;
        }
    }
}
